/**
 * 
 */
package br.com.grafos;

import java.util.ArrayList;
import java.util.List;

/**
 * Classe que representa um grafo, ao qual possui vérticves que possuem arcos.
 * 
 * @author moises
 */
public class Grafo {

    /**
     * Conjunto de vértices ou nodos do grafo
     */
    private List<Vertice> vertices = new ArrayList<Vertice>();

    /**
     * Nome do nodo raíz do grafo
     */
    private String nomeVerticeRaiz;

    /**
     * Nome do nodo anti raíz do grafo
     */
    private String nomeVerticeAntiRaiz;

    /**
     * Retorna o nodo raíz do grafo
     * 
     * @return nodo raíz
     */
    public Vertice getRaiz() {
	return Util.buscarVertice(this, this.nomeVerticeRaiz);
    }

    /**
     * Retorna o nodo anti raíz do grafo
     * 
     * @return nodo anti raíz
     */
    public Vertice getAntiRaiz() {
	return Util.buscarVertice(this, nomeVerticeAntiRaiz);
    }

    /**
     * @return the vertices
     */
    public List<Vertice> getVertices() {
	return vertices;
    }

    /**
     * @param vertices
     *            the vertices to set
     */
    public void setVertices(List<Vertice> vertices) {
	this.vertices = vertices;
    }

    /**
     * @return the nomeVerticeRaiz
     */
    public String getNomeVerticeRaiz() {
	return nomeVerticeRaiz;
    }

    /**
     * @param nomeVerticeRaiz
     *            the nomeVerticeRaiz to set
     */
    public void setNomeVerticeRaiz(String nomeVerticeRaiz) {
	this.nomeVerticeRaiz = nomeVerticeRaiz;
    }

    /**
     * @return the nomeVerticeAntiRaiz
     */
    public String getNomeVerticeAntiRaiz() {
	return nomeVerticeAntiRaiz;
    }

    /**
     * @param nomeVerticeAntiRaiz
     *            the nomeVerticeAntiRaiz to set
     */
    public void setNomeVerticeAntiRaiz(String nomeVerticeAntiRaiz) {
	this.nomeVerticeAntiRaiz = nomeVerticeAntiRaiz;
    }
}
